package com.wlps.service;

import com.wlps.entity.Commodity;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wlps.result.ResultPageVo;
import com.wlps.result.ResultVo;
import com.wlps.vo.sendcenter.commodity.CommodityAddVo;
import com.wlps.vo.sendcenter.commodity.CommodityConditionVo;
import com.wlps.vo.sendcenter.commodity.CommodityUpdateVo;
import com.wlps.vo.sendcenter.inoutform.CommodityAndWarehouseVo;
import com.wlps.vo.sendcenter.inoutform.CommodityInOutConditionVo;

import java.util.List;

import java.util.List;

/**
 * <p>
 * 商品表（commodity）
 * (1当有正在执行的订单时，不能删除商品。)
 * (如果是订购系统-订单的话不建议更新数据库建议更新redis到0的时候在更新数据库，也可以定时更新感觉可以使用这样的索引覆盖决定不习可以去掉) 服务类
 * </p>
 *
 * @author ZWYZY
 * @since 2020-07-31
 */
public interface ICommodityService extends IService<Commodity> {

    /**
     * 分页显示需出库商品
     *
     * @param pageNum
     * @param pageSize
     * @param commodityInOutConditionVo
     * @return
     */
    ResultPageVo<List<CommodityAndWarehouseVo>> getCommodityAndWarehouseOutVo(int pageNum, int pageSize, CommodityInOutConditionVo commodityInOutConditionVo);
    /**
     * 分页显示需入库商品
     *
     * @param pageNum
     * @param pageSize
     * @param commodityInOutConditionVo
     * @return
     */
    ResultPageVo<List<CommodityAndWarehouseVo>> getCommodityAndWarehouseInVo(int pageNum, int pageSize, CommodityInOutConditionVo commodityInOutConditionVo);

    /**
     * 分页显示商品
     *
     * @param pageNum
     * @param pageSize
     * @param commodityConditionVo
     * @return
     */
    ResultPageVo<List<Commodity>> getCommodity(int pageNum, int pageSize, CommodityConditionVo commodityConditionVo);

    /**
     * 增加商品
     *
     * @param commodityAddVo
     * @return
     */
    ResultVo addCommodity(CommodityAddVo commodityAddVo);

    /**
     * 删除商品
     *
     * @param id
     * @return
     */
    ResultVo deleteCommodity(Long id);


    /**
     * 修改商品
     *
     * @param commodityUpdateVo
     * @return
     */
    ResultVo updateCommodity(CommodityUpdateVo commodityUpdateVo);
}
